package cn.com.surker.weight.service;

import cn.com.surker.weight.entity.WeightOrder;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.Date;
import java.util.List;

/**
* <p>
 * 过磅订单表 服务类,用于直连数据库操作的服务接口,如旭科云连云,erp连本地
    * </p>
*
* @author admin
* @since 2024-11-06
*/
public interface WeightOrderService extends IService<WeightOrder> {

	/**
	 * 根据订单编码查询云端数据
	 *
	 * @param code
	 * @return
	 */
	WeightOrder queryByCode(String code);

	/**
	 * 删除云端数据
	 *
	 * @param id
	 * @return
	 */
	Integer deleteById(Long id);

	Integer deleteByCode(String code);

	/**
	 * 待检订单(查询本地的)
	 *
	 * @return
	 */
	List<WeightOrder> waitList();

	/**
	 * 审核通过
	 *
	 * @param uCode       订单码
	 * @param userName
	 * @param position    仓位
	 * @param minusWeight 扣除重量
	 * @param wxCode
	 * @return
	 */
	Integer adopt(String uCode, String userName, String position, String positionName, Double minusWeight, String wxCode, String driverName);

	/**
	 * 审核拒绝
	 *
	 * @param code
	 * @param userName
	 * @param remarks
	 * @return
	 */
	Integer refuse(String code, String userName, String remarks, String wxCode, String driverName);

	/**
	 * 查询二次过磅数据
	 *
	 * @return
	 */
	List<WeightOrder> againList();

	/**
	 * 二次过磅审核通过
	 *
	 * @param uCode
	 * @return
	 */
	Integer adoptAgain(String uCode);

	/**
	 * 抽检
	 *
	 * @param code
	 * @param wxCode
	 * @return
	 */
	Integer spotCheck(String code, String wxCode, String driverName);

	/**
	 * 抽检订单
	 *
	 * @return
	 */
	List<WeightOrder> checkList();

	/**
	 * 查询未除皮订单
	 *
	 * @param offset
	 * @param limit
	 * @return
	 */
	IPage<WeightOrder> unskinnedList(Integer offset, Integer limit);

	/**
	 * 运行分仓
	 *
	 * @param code
	 * @return
	 */
	Boolean compDo(String code);


	/**
	 * 修改仓位
	 *
	 * @param position     仓位id
	 * @param positionName 仓位名称
	 * @return
	 */
	Integer updatePosition(String code, String position, String positionName);

	/**
	 * 修改下单时间
	 *
	 * @param code    订单号
	 * @param creTime 创建时间
	 * @return
	 */
	Integer updateCreTime(String code, String creTime);

	/**
	 * 查询已经过了毛重的数据
	 *
	 * @param searchVal
	 * @param examineStatus
	 * @param sTime
	 * @param eTime
	 * @param offset
	 * @param limit
	 * @return
	 */
	IPage<WeightOrder> grossPage(String searchVal, Integer examineStatus, Date sTime, Date eTime, Integer offset, Integer limit);

	IPage<WeightOrder> findPage(String searchVal, Integer examineStatus, Date startTime, Date endTime, Integer offset, Integer limit);

	/**
	 * 查询过磅原始订单
	 * @param dbCode
	 * @param searchVal
	 * @param startTime
	 * @param endTime
	 * @param offset
	 * @param limit
	 * @return
	 */
	IPage<WeightOrder> findInitPage(Long orgId, String searchVal, Integer weightType, Integer carType, Integer searchType, String startTime, String endTime, Integer offset, Integer limit);

}
